#include "StdAfx.h"
#include "Sumidero.h"
#include <sstream>

Sumidero::Sumidero(Textura* fond,Textura* lin, double rad,int x,int y, string idn)
{

	this->posx = x;
	this->posy = y;
	this->fondo = fond;
	this->linea = lin;
	this->radio = rad;
	this->id = idn;
}

Sumidero::~Sumidero(void)
{
}

string Sumidero::toString(){

	stringstream resultado;
	resultado << "Sumidero: " << "ID: " <<	this->getid() << " Pos X: " << this->getPosX() << " Pos Y: " << this->getPosY() << "Radio: " <<this->getRadio() << std::endl;
	resultado << "Fondo Textura: " << this->getFondo()->GetIdTextura() <<std::endl;
	resultado << "Fondo Color: R= " << this->getFondo()->getRedChannel() << " G= " << this->getFondo()->getGreenChannel() << " B= "<< this->getFondo()->getBlueChannel()<< std::endl;
	resultado << "Linea Color: R= " << this->getLinea()->getRedChannel() << " G= " << this->getLinea()->getGreenChannel() << " B= "<< this->getLinea()->getBlueChannel()<< std::endl;
	return resultado.str();
}

// Devuelve el screen con la imagen cargada
void Sumidero::Dibujar(SDL_Surface *screen)
{
	SDL_Surface *image = this->getFondo()->getImagen();
	//Seteo el negro como color de fondo transparente para que dibuje solo el sapo
	SDL_SetColorKey(image, SDL_SRCCOLORKEY|SDL_RLEACCEL, SDL_MapRGB(image->format,0,0,0));
	
	SDL_Rect rect;
	rect.x = this->getPosX() - image->w / 2 + screen->w / 2;
	rect.y = this->getPosY() - image->h / 2 + screen->h / 2;
	
	SDL_BlitSurface(image, 0, screen, &rect);

}

void Sumidero::CargarTextura()
{
	this->fondo->cargar(this->getRadio());
}